import RPi.GPIO as GPIO
from time import sleep


GPIO.setmode(GPIO.BCM)  
GPIO.setwarnings(False)

def getP(servo_pin):
    GPIO.setup(servo_pin, GPIO.OUT, initial=False)
    p=GPIO.PWM(servo_pin, 50) # 初始频率为50HZ
    return p

p17=getP(17)
p18=getP(18)


# servo_pin 舵机信号线接树莓派GPIO17
# 水平转动
def horizontal_change(angle):
    p = p17
    p.start(angleToDutyCycle(angle))
    return p

# 垂直倒转
def vertical_change():
    p=p18
    p.start(angleToDutyCycle(120))  # 舵机初始化角度为120 回正，回到水平位置
    sleep(0.8)
    p.ChangeDutyCycle(angleToDutyCycle(0))  # 下降90度
    sleep(1)
    p.start(angleToDutyCycle(120))  # 舵机初始化角度为120  回正
    return p


# 旋转角度转换到PWM占空比
def angleToDutyCycle(angle):
    return 2.5 + angle / 270.0 * 10

 
if __name__ == '__main__':
    while True:
        angle = int(input('旋转度数：'))
        if angle >= 0 and angle <= 270:
            print(f'当前为{angle}度')
            # 水平转动
            p = horizontal_change(angle)
            sleep(1.2)
            # 垂直方向回正
            p = vertical_change()
        else:
            print('旋转度数在0-270之间！')

    # for angle in [10, 180, 50]:
    #     print(f'当前为{angle}度')
    #     # 水平转动
    #     p = horizontal_change(angle)
    #     sleep(1.2)
    #     # 垂直方向回正
    #     p = vertical_change()

